// src/plugins/dict.js

import Vue from 'vue'
import { getDicts } from '@/api/system/dict/data'

const Dict = {
  install(Vue) {
    /**
     * 获取字典数据
     * @param {string} dictType 字典类型
     * @returns {Promise}
     */
    Vue.prototype.getDicts = getDicts

    /**
     * 字典标签翻译
     * @param {array} dictOptions 字典选项数组
     * @param {string|number} value 字典值
     * @returns {string} 字典标签
     */
    Vue.prototype.selectDictLabel = function(dictOptions, value) {
      if (!value && value !== 0) {
        return ''
      }
      for (let i = 0; i < dictOptions.length; i++) {
        const option = dictOptions[i]
        if (String(option.value) === String(value)) {
          return option.label
        }
      }
      return ''
    }

    /**
     * 字典标签翻译（多个值）
     * @param {array} dictOptions 字典选项数组
     * @param {string|array} values 字典值，多个用逗号分隔或数组
     * @param {string} separator 分隔符
     * @returns {string} 翻译后的标签字符串
     */
    Vue.prototype.selectDictLabels = function(dictOptions, values, separator = ',') {
      if (!values) {
        return ''
      }
      if (!Array.isArray(values)) {
        values = values.split(',')
      }
      const labels = []
      for (let i = 0; i < values.length; i++) {
        for (let j = 0; j < dictOptions.length; j++) {
          const option = dictOptions[j]
          if (String(option.value) === String(values[i])) {
            labels.push(option.label)
            break
          }
        }
      }
      return labels.join(separator)
    }
  }
}

Vue.use(Dict)
